package 面试;

/**
 * 给一个整数 x 和一个数组 array
 * 求数组里面是否存在元素的积等于x
 * <p>
 * 元素可以重复使用
 * <p>
 * 若存在返回 1
 * 不存在返回 -1
 */
public class 整数之积 {

    public static void main(String[] args) {
        int x = 21;
        int[] array = {2, 3, 4, 5};
        System.out.println(hasMutil(x, array));
    }

    public static int hasMutil(int x, int[] array) {
        if (cal(x, array)) {
            return 1;
        } else {
            return -1;
        }
    }

    static boolean ans = false;

    public static boolean cal(int x, int[] array) {
        if (x < 0)
            return false;
        if (x == 1)
            ans = true;
        for (int i = 0; i < array.length; i++) {
            if (x % array[i] == 0 && ans == false) {
                cal(x /= array[i], array);
            }
        }
        return ans;
    }
}
